/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.dataprocess.gui.selector;
import net.codjo.dataprocess.client.FamilyClientHelper;
import net.codjo.dataprocess.gui.util.GenericRenderer;
import net.codjo.mad.client.request.RequestException;
import net.codjo.mad.gui.framework.MutableGuiContext;
import java.util.Arrays;
import java.util.Map;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
/**
*
*/
public class FamilyComboBox extends JComboBox {
private MutableGuiContext ctxt;
private boolean showVisibleFamilyOnly;
private boolean isLoading = false;
public FamilyComboBox(MutableGuiContext ctxt, boolean showVisibleFamilyOnly) {
this.ctxt = ctxt;
this.showVisibleFamilyOnly = showVisibleFamilyOnly;
}
public boolean isLoading() {
return isLoading;
}
public void load(int repositoryId) {
isLoading = true;
try {
setModel(getFamilyComboBoxModel(repositoryId));
}
catch (RequestException ex) {
throw new IllegalStateException("Erreur d'initialisation du composant FamilyComboBox", ex);
}
finally {
isLoading = false;
}
}
private DefaultComboBoxModel getFamilyComboBoxModel(int repositoryId) throws RequestException {
Map<String, String> familiesMap = FamilyClientHelper.getFamilyByRepositoryId(ctxt, repositoryId,
showVisibleFamilyOnly);
GenericRenderer rendererCombo = new GenericRenderer(familiesMap);
setRenderer(rendererCombo);
String[] familyIdTab = familiesMap.keySet().toArray(new String[familiesMap.keySet().size()]);
Arrays.sort(familyIdTab, new FamilyComparator(familiesMap));
return new DefaultComboBoxModel(familyIdTab);
}
public int getSelectedFamilyId() {
if (getSelectedItem() != null) {
return Integer.parseInt((String)getSelectedItem());
}
return 0;
}
}